package model

import (
	"gin-blog/utils/msg"
	"github.com/jinzhu/gorm"
)

// Category 分类
type Category struct {
	gorm.Model
	Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// CheckCategory 查询数据库有没有指定分类名
func CheckCategory(category *Category) int {
	var c Category
	// 从user表中查询第一个用户名为name的记录
	db.Where("name = ?", category.Name).First(&c)
	// 在修改时，防止用户名不变导致出错，防止用户名没查询到时给ID赋0值
	if category.ID != c.ID && c.ID != 0 {
		return msg.ERROR_CATEGORY_USED
	}
	return msg.SUCCESS
}

// AddCategory 添加分类
func AddCategory(category *Category) int {

	// 插入数据库
	err := db.Create(&category).Error
	if err != nil {
		return msg.ERROR_CATEGORY_ADD
	}
	return msg.SUCCESS
}

// GetCategorys 查询分类列表
func GetCategorys() (categorys []Category, count int) {
	err := db.Find(&categorys).Count(&count).Error
	// ErrRecordNotFound：没有记录
	if err != nil && err != gorm.ErrRecordNotFound {
		return nil, 0
	}
	return categorys, count
}

// DeleteCategory 删除分类
func DeleteCategory(id int) int {
	err := db.Where("id = ?", id).Delete(&Category{}).Error
	if err != nil {
		return msg.ERROR_CATEGORY_DELETE
	}
	return msg.SUCCESS
}

// EditCategory 修改分类
func EditCategory(category *Category) int {
	err := db.Model(&Category{}).Where("id = ?", category.ID).Update(category).Error
	if err != nil {
		return msg.ERROR_USER_EDIT
	}
	return msg.SUCCESS
}
